// 最长递增子序列

// 给你一个整数数组 nums ，找到其中最长严格递增子序列的长度。

// 子序列 是由数组派生而来的序列，删除（或不删除）数组中的元素而不改变其余元素的顺序。例如，[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。

function lengthOfLIS(nums) {
  // dp用1初始化，因为每个元素本身就是一个递增子序列
  const dp = new Array(nums.length).fill(1);

  // 遍历数组，更新 dp 数组
  for (let i = 0; i < nums.length; i++) {
    for (let j = 0; j < i; j++) {
      if (nums[i] > nums[j]) {
        // 如果 nums[i] 大于 nums[j]，则 nums[i] 可以接在 nums[j] 后面形成递增子序列
        // 更新 dp[i] 为 dp[j] + 1 与当前 dp[i] 中的较大值
        dp[i] = Math.max(dp[i], dp[j] + 1);
      }
    }
  }
  return Math.max(...dp);
}